
/**
 * @file AmbDatum.hpp
 * Class to compute the PPP Solution.
 *
 * @author shjzhang, 2019/07/22
 * all rights reserved by shjzhang
 */

#ifndef GPSTK_AmbDatum_HPP
#define GPSTK_AmbDatum_HPP

#include "DataStructures.hpp"
#include "Variable.hpp"
#include "Kruskal.hpp"
#include "ARRound.hpp"
#include "ARMLambda.hpp"
#include "Equation.hpp"
#include "Stats.hpp"


namespace gpstk
{

   class AmbDatum 
   {
   public:

          /** Common constructor.
           *
           * @param useNEU   If true, will compute dLat, dLon, dH coordinates;
           *                 if false (the default), will compute dx, dy, dz.
           */
       AmbDatum()
       {};

       // fix ambiguities using lambda
       virtual VariableDataMap Prepare(VariableDataMap& ambData, 
                                       VariableDataMap& ambVarData)
          noexcept(false);

       // fix ambiguities using lambda
       virtual VariableDataMap Prepare(VariableDataMap& ambData, 
                                       CovarianceDataMap& ambCovData)
          noexcept(false);

          /// Returns a string identifying this object.
       virtual std::string getClassName(void) const;


       virtual void init();


          /// Destructor.
       virtual ~AmbDatum() {};


       ARRound round;



   }; // End of class 'AmbDatum'

      //@}

}  // End of namespace gpstk

#endif   // GPSTK_AmbDatum_HPP
